using System;
using System.Collections.Generic;
using AEL.COM;
using BEL;
using HER;

namespace DEL.COM
{
    public class DO_Com_Devolucion_Donacion_Egr_Det
    {
        #region Adapter

        private static CEL.COM.DO_Com_Devolucion_Donacion_Egr_Det _adpCom_Devolucion_Donacion_Egr_Det;
        private static CEL.COM.DO_Com_Devolucion_Donacion_Egr_Det adpCom_Devolucion_Donacion_Egr_Det
        {
            get
            {
                if (_adpCom_Devolucion_Donacion_Egr_Det == null)
                    _adpCom_Devolucion_Donacion_Egr_Det = new CEL.COM.DO_Com_Devolucion_Donacion_Egr_Det();
                return _adpCom_Devolucion_Donacion_Egr_Det;
            }
        }

        #endregion

        #region Obtencion de Datos

        public static List<Com_Devolucion_Donacion_Egr_Det> GetByEmpresa(Scope s)
        {
            string filtroParaCEL;
            string[] campos = {"Estado =", "Com_Devolucion_Donacion_Egr_Fecha <=",
                                  "Com_Devolucion_Donacion_Egr_Fecha >=", "Bod_Bodega_Nombre LIKE"};
            
            FiltroDiccionario dic;
            int encontrados =
                Filtrado.AnalizarExpresionDeFiltrado(s.Expresion_De_Filtrado, campos, out dic, out filtroParaCEL);
            List<Com_Devolucion_Donacion_Egr_Det> resultado;

            if (encontrados > 0)
            {
                s.Expresion_De_Filtrado = filtroParaCEL;

                string estado = "%";
                if (dic["Estado ="] != string.Empty)
                    estado += dic["Estado ="].Trim('\'');

                string bodBodegaNombre = "%";
                if (dic["Bod_Bodega_Nombre LIKE"] != string.Empty)
                    bodBodegaNombre = dic["Bod_Bodega_Nombre LIKE"].Trim('\'');

                DateTime fechaInicio = new DateTime(1900, 1, 1);
                if (dic["Com_Devolucion_Donacion_Egr_Fecha >="] != string.Empty)
                    fechaInicio = Convert.ToDateTime(dic["Com_Devolucion_Donacion_Egr_Fecha >="].Trim('\''));

                DateTime fechaFin = new DateTime(2079, 6, 6);
                if (dic["Com_Devolucion_Donacion_Egr_Fecha <="] != string.Empty)
                    fechaFin = Convert.ToDateTime(dic["Com_Devolucion_Donacion_Egr_Fecha <="].Trim('\''));

                resultado = adpCom_Devolucion_Donacion_Egr_Det.GetByEstado(s, estado, bodBodegaNombre, fechaInicio, fechaFin);
            }
            else
            {
                resultado = adpCom_Devolucion_Donacion_Egr_Det.GetByEmpresa(s);
            }

            return resultado;
        }
        #endregion
    }
}